D-Link DIR-645ÔÚʵÏÖÉÏ´æÔÚÃüÁî×¢Èë¼°Õ»»º³åÇøÒç³ö©¶´£¬¹¥»÷Õß¿ÉÀûÓÃÕâЩ©¶´ÈÎÒâ¸ü¸ÄÄڴ棬ÒÔrootȨÏÞÖ´ÐÐÈÎÒâshellÃüÁî»ò´úÂë¡£¸Ã©¶´ÊÇCGI½Å±¾ÔÚ´¦Àíauthentication.cgiÇëÇ󣬽«ÇëÇóÍ·µÄCONTENT_LENGTHÖµ×÷Ϊreadº¯Êý¶ÁÈ¡ÎļþµÄÄÚÈÝ´óС£¬ÓÉÓÚ¸ÃÖµ¿É¿Ø£¬Òò´ËÔì³Éreadº¯ÊýµÄ»º³åÇøÒç³ö¡£
Ê×ÏÈͨ¹ýattifyosÐéÄâ»ú½øÐл·¾³´î½¨£¬attifyosÐéÄâ»úÖм¯³ÉÁ˳£ÓõĹ̼þ»·¾³Ä£Ä⹤¾ß¡£
attifyosÐéÄâ»úÏÂÔØµØÖ·£ºhttps://pan.baidu.com/s/1Vracsnlt5uNbdmfYK4dp8Q
ÃÜÂë:tvoh
DIR645¹Ì¼þÏÂÔØµØÖ·£ºhttps://pan.baidu.com/s/1B7fDB4NETjdGWtlkiPULpw
ÌáÈ¡Â룺5iaz
ÏÂÔØÍê³Éºó£¬½øÈëÐéÄâ»úĿ¼/home/oit/tools/firmadyne£¬Ö´ÐÐpython fat.py

´Ëʱ»áÒªÇóÊäÈëËùÐèҪģÄâµÄ¹Ì¼þµØÖ·£¬ÕâÀïÎÒ½«¹Ì¼þ·ÅÖÃÔÚ×ÀÃæ£¬Òò´ËĿ¼Ϊ/home/oit/Desktop/firewalks/DIR645A1_FW103RUB08.bin
½ÓÏÂÀ´»áÒªÇóÌîд¹Ì¼þµÄÆ·ÅÆÃû£¬¿ÉÈÎÒâÌîд

È»ºó±ãÊǸù¾ÝÒªÇó²»¶ÏÌîдfirmadyneµÄÓû§ÃÜÂ룬ÔÚattifyos1.3ÖУ¬ÃÜÂëΪfirmadyne¡£

¹ý³ÌÖпÉÄÜÐèÒªÌîдoitÓû§µÄÃÜÂ룬ÃÜÂëΪattify123¡£×îºóµ±³öÏÖÈçÏÂÒ³ÃæÊ±£¬Ôò±íʾ¹Ì¼þÄ£Äâ³É¹¦¡£

´Ëʱ·ÃÎÊhttp://192.168.0.1£¬¿É¿´µ½Â·ÓÉÆ÷µÇÂ¼Ò³Ãæ
Ïò·ÓÉÆ÷¹ÜÀíϵͳ·¢ÏÖÈçÏÂÇëÇó
POST /authentication.cgi HTTP/1.1Host: 192.168.0.1User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:50.0) Gecko/20100101 Firefox/50.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Content-Type: application/x-www-form-urlencodedReferer: http://192.168.0.1/Content-Length: 7044Cookie: uid=TjnCBrkNZjConnection: close
uid=A21G&password=AAAAAA1024*A
·µ»Ø½á¹ûÈçÏÂͼËùʾ£¬Ôì³ÉÏà¹Ø·þÎñ500£¬ÎÞ·¨·ÃÎÊ

¶øÕý³£µÄÇëÇó½á¹ûÈçÏÂ

ÇëÇóÌåµÄÄÚÈݳ¬³¤µ¼ÖÂÁËdir645³öÏÖÁË»º³åÇøÒç³ö£¬´Ó¶ø¾Ü¾ø·þÎñ¡£
Ê×ÏÈͨ¹ýbinwalk½âѹ¹Ì¼þ

½øÈ뵽·ÓÉÆ÷ϵͳĿ¼Ï£¬·¢ÏÖÇëÇóµÄauthentication.cgi·¾¶£¬Êµ¼Ê´¦ÀíÎļþΪcgibin

½ÓÏÂÀ´¶Ôcgibin½øÐз´±àÒ룬½«¸Ã³ÌÐòµ¼Èëµ½idaÖУ¬Ä¬ÈϽøÈë³õʼº¯ÊýµÄmainº¯ÊýÖÐ

F5²é¿´Î±´úÂ룬¿ÉÒÔ¿´µ½mainº¯ÊýÖ÷ÒªÊÇÅжÏÇëÇóuri£¬¸ù¾Ý²»Í¬µÄuriÑ¡Ôñ²»Í¬µÄº¯Êý½øÐд¦Àí

Èç¹ûΪauthentication.cgi£¬Ôò½øÈëauthenticationcgi_mainº¯Êý´¦Àí£¬²¢½«ÇëÇóµÄÊý¾Ý×÷Ϊ²ÎÊýÖµ´«Èë¸Ãº¯Êý

½øÒ»²½½øÈëauthenticationcgi_mainº¯Êý

ÔÚÕâ¸öº¯ÊýÀ¸ù¾ÝÇëÇó·½Ê½µÄ²»Í¬£¬½øÈ벻ͬµÄ³ÌÐòÂß¼´¦Àí¡£ÎÒÃǵÄ©¶´ÀûÓÃpocΪpost·½·¨£¬²é¿´postÏà¹ØÂß¼

¿ÉÒÔ¿´µ½£¬µ±ÎªpostÇëÇóʱ£¬¶ÁÈ¡CONTENT_LENGTHºÍCONTENT_TYPEµÄÖµ£¬Èô²»Îª¿Õ£¬Ôò½«Ïà¹Ø²ÎÊýÖµ´«Èëµ½readº¯ÊýÀï½øÐжÁÈ¡¡£º¯ÊýΪread(v21,v70,v20)
¸ù¾ÝcÓïÑԵĺ¯ÊýÓ÷¨ÈçÏÂËùʾ

ÎÒÃÇ¿ÉÒÔ¿´µ½£¬¸Ãº¯ÊýÓÃÓÚ¶ÁÈ¡´ò¿ªÎļþµÄÄÚÈÝ¡£ÆäÖеÚÒ»¸ö²ÎÊýΪҪ¶ÁÈ¡µÄÎļþÄÚÈÝ£¬µÚ¶þ¸ö²ÎÊýΪ¶ÁÈ¡µ½µÄÄÚÈݱ£´æµÄ»º³åÇø£¬µÚÈý¸ö²ÎÊýÖ¸¶¨ËùÒª¶ÁÈ¡ÎļþµÄ³¤¶È¡£Õâ¸öº¯ÊýÈç¹ûʹÓò»¹æ·¶µÄ»°£¬µ±µÚÈý¸ö²ÎÊýÖ¸¶¨µÄ¶ÁÈ¡Îļþ³¤¶È³¬¹ýµÚ¶þ¸ö²ÎÊýËù¶¨ÒåµÄ»º³åÇø´óСʱ£¬¾ÍÔì³ÉÁË»º³åÇøÒç³ö©¶´¡£
ÄÇôÔÚÕâÀï©¶´°¸ÀýÖУ¬ÎÒÃÇÀ´¿´ÏÂread£¨v21,v70,v20) º¯ÊýËù¶ÔÓ¦µÄÕâÈý¸ö²ÎÊýÖµ·Ö±ðÊÇʲô¡£
v21=fileno(stdin) ΪÓû§ÊäÈëµÄÖµ£¬¼´postÇëÇóÌåµÄÖеÄbodyÊý¾Ý

v70Ϊº¯Êý¶¨ÒåµÄÊý¾Ý½á¹¹£¬´óСΪ1024±ÈÌØ

v20 = atoi(v18)= atoi(getenv(¡°CONTENT_LENGTH¡±£©£¬ÎªCONTENT_LENGTHµÄÖµ

ÓÉÓÚÕâÀïv20Ëù´ú±íµÄ¶ÁÈ¡ÄÚÈݵij¤¶ÈÊÇÓû§¿É¿ØµÄ£¬Òò´Ëµ±ÉèÖÃCONTENT_LENGTH´óÓÚ1024£¬ÇëÇóÌåÄÚÈݳ¬³¤Ê±£¬¾ÍÔì³ÉÁËreadº¯Êý³öÏÖ»º³åÇøÒç³ö©¶´